﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Inventario_HardSoft.ADO;
using System.Data;
using System.Windows.Forms;

namespace Inventario_HardSoft.Controlador
{
    class Ctrl_Usu_Prob
    {
         ConexionDataContext conexion;
         public Ctrl_Usu_Prob()
        {
            conexion =new ConexionDataContext();
        }
             
       internal List<USUARIO> getList_Asistentes()
        { 
           List<USUARIO> lisusu = conexion.USUARIO.Where(x=> x.ELIMINADO == 0).ToList<USUARIO>();
           return lisusu;   
        }        
       
       //internal List<PROBLEMA> getList_Probl(string usuar)
       internal void getList_Probl(DataGridView dgSw, string usuar)
       { 
           int i = 1;
           var consulta =  from u in conexion.USUARIO
                           join e in conexion.EQUIPO on u.IDUSUARIO equals e.IDUSUARIO
                           join p in conexion.PROBLEMA on e.IDEQUIPO equals p.IDEQUIPO
                           join prg in conexion.PROGRAMA on p.IDPROGRAMA equals prg.IDPROGRAMA
                           where u.NOMBRE == usuar && p.IDTIPOPROBLEMA == "TIP_02"
                           select new
                           {
                               u.NOMBRE,
                               e.TIPOEQUIPO,                            
                               p.DESCRIPCION,
                               p.SOLUCION,                               
                               p.FECHAENTREGA,
                               p.FECHAREGISTROENTRADA,
                               p.FECHAREGISTROSALIDA,
                               p.TIEMPOREPARACION,
                               p.ESTADO,
                               p.REPARADORNAME,
                               p.PRIORIDAD,                               
                               p.REGISTRADOPOR,
                               p.OBSERVACIONES,
                               prg.NOMBREPROGRAMA,
                               p.TICKET 
                           };
           dgSw.Rows.Clear();
           foreach (var c in consulta)
           {
               object[] obj = new object[] {
                                            i.ToString(), 
                                            c.TICKET ?? string.Empty,
                                            c.TIPOEQUIPO ?? string.Empty,
                                            c.DESCRIPCION ?? string.Empty,
                                            c.SOLUCION ?? string.Empty,
                                            c.FECHAENTREGA.GetValueOrDefault(DateTime.MinValue),
                                            c.FECHAREGISTROENTRADA.GetValueOrDefault(DateTime.MinValue),
                                            c.FECHAREGISTROSALIDA.GetValueOrDefault(DateTime.MaxValue), 
                                            c.TIEMPOREPARACION ?? string.Empty, 
                                            c.ESTADO ?? string.Empty, 
                                            c.REPARADORNAME ?? string.Empty,
                                            c.PRIORIDAD,                                          
                                            c.REGISTRADOPOR ?? string.Empty,
                                            c.OBSERVACIONES ?? string.Empty,
                                            c.NOMBREPROGRAMA ?? string.Empty
                                           };
               obj[5] = ((DateTime)obj[5]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[5]).ToShortDateString(); //fecha de reg. entrada
               obj[6] = ((DateTime)obj[6]).Equals(DateTime.MaxValue) ? String.Empty : ((DateTime)obj[6]).ToShortDateString();//fecha de reg. salida
               obj[7] = ((DateTime)obj[7]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[7]).ToShortDateString(); //fecha de entrega
               //obj[13] =((String)obj[13]) == null ? String.Empty : obj[13];//fecha de reg. salida
               dgSw.Rows.Add(obj);
               i++;
           }            
       }

       internal void getList_ProblDos(DataGridView dg, string usuar)
       {
           int i = 1;
           var consulta = from u in conexion.USUARIO
                          join e in conexion.EQUIPO on u.IDUSUARIO equals e.IDUSUARIO
                          join p in conexion.PROBLEMA on e.IDEQUIPO equals p.IDEQUIPO
                          where u.NOMBRE == usuar && p.IDTIPOPROBLEMA=="TIP_01"
                          select new
                          {
                              u.NOMBRE,
                              e.TIPOEQUIPO,
                              p.DESCRIPCION,
                              p.SOLUCION,
                              p.FECHAENTREGA,
                              p.FECHAREGISTROENTRADA,
                              p.FECHAREGISTROSALIDA,
                              p.TIEMPOREPARACION,
                              p.ESTADO,
                              p.REPARADORNAME,
                              p.PRIORIDAD,
                              p.REGISTRADOPOR,
                              p.OBSERVACIONES,
                              p.TICKET
                          };
           dg.Rows.Clear();
           foreach (var c in consulta)
           {
               object[] obj = new object[] {
                                            i.ToString(), 
                                            c.TICKET ?? string.Empty,
                                            c.TIPOEQUIPO ?? string.Empty,
                                            c.DESCRIPCION ?? string.Empty,
                                            c.SOLUCION ?? string.Empty,
                                            c.FECHAENTREGA.GetValueOrDefault(DateTime.MinValue),
                                            c.FECHAREGISTROENTRADA.GetValueOrDefault(DateTime.MinValue),
                                            c.FECHAREGISTROSALIDA.GetValueOrDefault(DateTime.MaxValue), 
                                            c.TIEMPOREPARACION ?? string.Empty, 
                                            c.ESTADO ?? string.Empty, 
                                            c.REPARADORNAME ?? string.Empty,
                                            c.PRIORIDAD,                                          
                                            c.REGISTRADOPOR ?? string.Empty,
                                            c.OBSERVACIONES ?? string.Empty 
                                           };               
               obj[5] = ((DateTime)obj[5]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[5]).ToShortDateString(); //fecha de reg. entrada
               obj[6] = ((DateTime)obj[6]).Equals(DateTime.MaxValue) ? String.Empty : ((DateTime)obj[6]).ToShortDateString();//fecha de reg. salida
               obj[7] = ((DateTime)obj[7]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[7]).ToShortDateString(); //fecha de entrega
               dg.Rows.Add(obj);
               i++;
           }   


       }
    }
}
